lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, y) → y
plus(s(x), y) → s(plus(x, y))
fac(x) → loop(x, s(0), s(0))
loop(x, c, y) → if(lt(x, c), x, c, y)
if(false, x, c, y) → loop(x, s(c), times(y, s(c)))
if(true, x, c, y) → y
↳ QTRS
↳ Overlay + Local Confluence
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, y) → y
plus(s(x), y) → s(plus(x, y))
fac(x) → loop(x, s(0), s(0))
loop(x, c, y) → if(lt(x, c), x, c, y)
if(false, x, c, y) → loop(x, s(c), times(y, s(c)))
if(true, x, c, y) → y
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, y) → y
plus(s(x), y) → s(plus(x, y))
fac(x) → loop(x, s(0), s(0))
loop(x, c, y) → if(lt(x, c), x, c, y)
if(false, x, c, y) → loop(x, s(c), times(y, s(c)))
if(true, x, c, y) → y
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
times(0, x0)
times(s(x0), x1)
plus(0, x0)
plus(s(x0), x1)
fac(x0)
loop(x0, x1, x2)
if(false, x0, x1, x2)
if(true, x0, x1, x2)
TIMES(s(x), y) → PLUS(y, times(x, y))
LT(s(x), s(y)) → LT(x, y)
FAC(x) → LOOP(x, s(0), s(0))
IF(false, x, c, y) → LOOP(x, s(c), times(y, s(c)))
LOOP(x, c, y) → IF(lt(x, c), x, c, y)
IF(false, x, c, y) → TIMES(y, s(c))
LOOP(x, c, y) → LT(x, c)
TIMES(s(x), y) → TIMES(x, y)
PLUS(s(x), y) → PLUS(x, y)
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, y) → y
plus(s(x), y) → s(plus(x, y))
fac(x) → loop(x, s(0), s(0))
loop(x, c, y) → if(lt(x, c), x, c, y)
if(false, x, c, y) → loop(x, s(c), times(y, s(c)))
if(true, x, c, y) → y
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
times(0, x0)
times(s(x0), x1)
plus(0, x0)
plus(s(x0), x1)
fac(x0)
loop(x0, x1, x2)
if(false, x0, x1, x2)
if(true, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
TIMES(s(x), y) → PLUS(y, times(x, y))
LT(s(x), s(y)) → LT(x, y)
FAC(x) → LOOP(x, s(0), s(0))
IF(false, x, c, y) → LOOP(x, s(c), times(y, s(c)))
LOOP(x, c, y) → IF(lt(x, c), x, c, y)
IF(false, x, c, y) → TIMES(y, s(c))
LOOP(x, c, y) → LT(x, c)
TIMES(s(x), y) → TIMES(x, y)
PLUS(s(x), y) → PLUS(x, y)
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, y) → y
plus(s(x), y) → s(plus(x, y))
fac(x) → loop(x, s(0), s(0))
loop(x, c, y) → if(lt(x, c), x, c, y)
if(false, x, c, y) → loop(x, s(c), times(y, s(c)))
if(true, x, c, y) → y
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
times(0, x0)
times(s(x0), x1)
plus(0, x0)
plus(s(x0), x1)
fac(x0)
loop(x0, x1, x2)
if(false, x0, x1, x2)
if(true, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
PLUS(s(x), y) → PLUS(x, y)
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, y) → y
plus(s(x), y) → s(plus(x, y))
fac(x) → loop(x, s(0), s(0))
loop(x, c, y) → if(lt(x, c), x, c, y)
if(false, x, c, y) → loop(x, s(c), times(y, s(c)))
if(true, x, c, y) → y
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
times(0, x0)
times(s(x0), x1)
plus(0, x0)
plus(s(x0), x1)
fac(x0)
loop(x0, x1, x2)
if(false, x0, x1, x2)
if(true, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
↳ QDP
PLUS(s(x), y) → PLUS(x, y)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
times(0, x0)
times(s(x0), x1)
plus(0, x0)
plus(s(x0), x1)
fac(x0)
loop(x0, x1, x2)
if(false, x0, x1, x2)
if(true, x0, x1, x2)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
times(0, x0)
times(s(x0), x1)
plus(0, x0)
plus(s(x0), x1)
fac(x0)
loop(x0, x1, x2)
if(false, x0, x1, x2)
if(true, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
PLUS(s(x), y) → PLUS(x, y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
TIMES(s(x), y) → TIMES(x, y)
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, y) → y
plus(s(x), y) → s(plus(x, y))
fac(x) → loop(x, s(0), s(0))
loop(x, c, y) → if(lt(x, c), x, c, y)
if(false, x, c, y) → loop(x, s(c), times(y, s(c)))
if(true, x, c, y) → y
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
times(0, x0)
times(s(x0), x1)
plus(0, x0)
plus(s(x0), x1)
fac(x0)
loop(x0, x1, x2)
if(false, x0, x1, x2)
if(true, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
TIMES(s(x), y) → TIMES(x, y)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
times(0, x0)
times(s(x0), x1)
plus(0, x0)
plus(s(x0), x1)
fac(x0)
loop(x0, x1, x2)
if(false, x0, x1, x2)
if(true, x0, x1, x2)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
times(0, x0)
times(s(x0), x1)
plus(0, x0)
plus(s(x0), x1)
fac(x0)
loop(x0, x1, x2)
if(false, x0, x1, x2)
if(true, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
TIMES(s(x), y) → TIMES(x, y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
LT(s(x), s(y)) → LT(x, y)
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, y) → y
plus(s(x), y) → s(plus(x, y))
fac(x) → loop(x, s(0), s(0))
loop(x, c, y) → if(lt(x, c), x, c, y)
if(false, x, c, y) → loop(x, s(c), times(y, s(c)))
if(true, x, c, y) → y
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
times(0, x0)
times(s(x0), x1)
plus(0, x0)
plus(s(x0), x1)
fac(x0)
loop(x0, x1, x2)
if(false, x0, x1, x2)
if(true, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
LT(s(x), s(y)) → LT(x, y)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
times(0, x0)
times(s(x0), x1)
plus(0, x0)
plus(s(x0), x1)
fac(x0)
loop(x0, x1, x2)
if(false, x0, x1, x2)
if(true, x0, x1, x2)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
times(0, x0)
times(s(x0), x1)
plus(0, x0)
plus(s(x0), x1)
fac(x0)
loop(x0, x1, x2)
if(false, x0, x1, x2)
if(true, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
LT(s(x), s(y)) → LT(x, y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
IF(false, x, c, y) → LOOP(x, s(c), times(y, s(c)))
LOOP(x, c, y) → IF(lt(x, c), x, c, y)
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, y) → y
plus(s(x), y) → s(plus(x, y))
fac(x) → loop(x, s(0), s(0))
loop(x, c, y) → if(lt(x, c), x, c, y)
if(false, x, c, y) → loop(x, s(c), times(y, s(c)))
if(true, x, c, y) → y
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
times(0, x0)
times(s(x0), x1)
plus(0, x0)
plus(s(x0), x1)
fac(x0)
loop(x0, x1, x2)
if(false, x0, x1, x2)
if(true, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
IF(false, x, c, y) → LOOP(x, s(c), times(y, s(c)))
LOOP(x, c, y) → IF(lt(x, c), x, c, y)
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, y) → y
plus(s(x), y) → s(plus(x, y))
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
times(0, x0)
times(s(x0), x1)
plus(0, x0)
plus(s(x0), x1)
fac(x0)
loop(x0, x1, x2)
if(false, x0, x1, x2)
if(true, x0, x1, x2)
fac(x0)
loop(x0, x1, x2)
if(false, x0, x1, x2)
if(true, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
LOOP(x, c, y) → IF(lt(x, c), x, c, y)
IF(false, x, c, y) → LOOP(x, s(c), times(y, s(c)))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, y) → y
plus(s(x), y) → s(plus(x, y))
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
times(0, x0)
times(s(x0), x1)
plus(0, x0)
plus(s(x0), x1)
(1) (IF(lt(x3, x4), x3, x4, x5)=IF(false, x6, x7, x8) ⇒ IF(false, x6, x7, x8)≥LOOP(x6, s(x7), times(x8, s(x7))))
(2) (lt(x3, x4)=false ⇒ IF(false, x3, x4, x5)≥LOOP(x3, s(x4), times(x5, s(x4))))
(3) (false=false ⇒ IF(false, x19, 0, x5)≥LOOP(x19, s(0), times(x5, s(0))))
(4) (lt(x20, x21)=false∧(∀x22:lt(x20, x21)=false ⇒ IF(false, x20, x21, x22)≥LOOP(x20, s(x21), times(x22, s(x21)))) ⇒ IF(false, s(x20), s(x21), x5)≥LOOP(s(x20), s(s(x21)), times(x5, s(s(x21)))))
(5) (IF(false, x19, 0, x5)≥LOOP(x19, s(0), times(x5, s(0))))
(6) (IF(false, x20, x21, x5)≥LOOP(x20, s(x21), times(x5, s(x21))) ⇒ IF(false, s(x20), s(x21), x5)≥LOOP(s(x20), s(s(x21)), times(x5, s(s(x21)))))
(7) (LOOP(x9, s(x10), times(x11, s(x10)))=LOOP(x12, x13, x14) ⇒ LOOP(x12, x13, x14)≥IF(lt(x12, x13), x12, x13, x14))
(8) (LOOP(x9, s(x10), x14)≥IF(lt(x9, s(x10)), x9, s(x10), x14))
POL(0) = 0
POL(IF(x1, x2, x3, x4)) = -1 - x1 + x2 - x3
POL(LOOP(x1, x2, x3)) = -1 + x1 - x2
POL(c) = -2
POL(false) = 1
POL(lt(x1, x2)) = 1
POL(plus(x1, x2)) = 0
POL(s(x1)) = 1 + x1
POL(times(x1, x2)) = 0
POL(true) = 1
The following pairs are in Pbound:
LOOP(x, c, y) → IF(lt(x, c), x, c, y)
The following rules are usable:
IF(false, x, c, y) → LOOP(x, s(c), times(y, s(c)))
true → lt(0, s(x))
lt(x, y) → lt(s(x), s(y))
false → lt(x, 0)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ AND
↳ QDP
↳ DependencyGraphProof
↳ QDP
IF(false, x, c, y) → LOOP(x, s(c), times(y, s(c)))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, y) → y
plus(s(x), y) → s(plus(x, y))
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
times(0, x0)
times(s(x0), x1)
plus(0, x0)
plus(s(x0), x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ AND
↳ QDP
↳ QDP
↳ DependencyGraphProof
LOOP(x, c, y) → IF(lt(x, c), x, c, y)
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, y) → y
plus(s(x), y) → s(plus(x, y))
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
times(0, x0)
times(s(x0), x1)
plus(0, x0)
plus(s(x0), x1)